#pragma GCC optimize(2)
#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <map>
#include <vector>
#include <set>

using namespace std;
using LL = long long;
using PII = pair<int, int>;

int n, m, q;
string s;
/*
做法：题意说的是给出那两列的E和N的值来判断是否是determinable 
    // 可以观察当出现 ? X
                     X * <-当前所在的位置
        时候*即是无法判断的位置
        通过查询当前情况，并记录位置，存储在set中
                
*/

void solve(){
    cin >> n >> m;
    vector<vector<int>> g(n + 1, vector<int>(m + 1, 0));

    set<int> nums;
    for(int i = 1; i <= n; i ++){
        cin >> s;
        for(int j = 1; j <= m; j ++){
            if(s[j - 1] == '.'){
                g[i][j] = 1;
            }else{
                g[i][j] = 0;
            }
        }
    }// 1代表能走 0代表不能走


    for(int i = 2; i <= n; i ++){
        for(int j = 2; j <= m; j ++){
            if(!g[i - 1][j] && !g[i][j - 1]){
                nums.insert(j);
            }
        }
    }

    nums.insert(1e9);
    cin >> q;
    while(q--){
        int x,y;cin>>x>>y;
		if(*nums.upper_bound(x)<=y) cout<<"NO\n";
		else cout<<"YES\n";
    }

    
}

int main(){
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    solve();


    return 0;
}